java后端请求第三方接口并处理HttpEntity类转换成实体类对象 您所在的位置:网站首页 springboot entity转换 java后端请求第三方接口并处理HttpEntity类转换成实体类对象

java后端请求第三方接口并处理HttpEntity类转换成实体类对象

2023-11-05 21:06| 来源: 网络整理| 查看: 265

  最近在写使用java后端去请求第三方接口的代码,给大家分享关于HttpEntity类的处理方式,而处理请求是需要根据第三方的要求来处理的,所以这里着重展示HttpEntity的处理。

  在开始代码前,需要知晓几个前提:

第三方接口已经开放,并且已经获得使用的权限应经拿到接口的数据,包括需要传入的参数和返回值

  首先展示我这个文档需要用到的接口参数和返回值,我将用这个接口来进行演示 在这里插入图片描述 在这里插入图片描述   然后需要导入几个jar包,这里我只做简单的演示,没涉及到具体的功能,所以需要的jar包不多

com.alibaba fastjson 1.2.68 org.apache.httpcomponents httpclient 4.5.12 org.apache.httpcomponents httpcore 4.4.13

  其次,根据返回值构建DTO实体类,这个实体类的结构必须按照返回值来构建,否则在转换时会失败

import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; @Data @NoArgsConstructor @ApiModel(value = "商品") public class ProductDto { private Integer id; private String name; private String logo; private Discount discount; private BigDecimal price; private BigDecimal mallPrice; private BigDecimal discountPrice; private BigDecimal salesVolume; } @Data class Discount { private Integer type; private BigDecimal value; }

  然后进行请求,并对返回值进行解析,已在代码中进行注释,注意,请求方式第三方如果给了用例,最好参考用例进行请求,对返回值的解析可以使用以下方法

import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.dyh.peachsys.dto.ProductDto; import io.swagger.annotations.Api; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.clienthods.CloseableHttpResponse; import org.apache.http.clienthods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; @Api(tags = "网络请求工具包") public class HttpRequest { public static JSONArray httpRequest() { CloseableHttpClient httpClient = HttpClientBuilder.create().build(); HttpGet httpGet = new HttpGet(RequestCommon.url); CloseableHttpResponse response = null; try { response = httpClient.execute(httpGet);//执行请求 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {//请求成功执行 HttpEntity entity = response.getEntity();//获取返回的数据 String s = EntityUtils.toString(entity);//转换成字符串 JSONObject datas = JSONObject.parseObject(s);//转换成JSON格式 Integer status = (Integer) datas.get("status");//获取返回数据状态,get获取的字段需要根据提供的返回值去获取 if (status == 200) {//返回的状态 JSONObject data = JSONObject.parseObject(datas.get("data").toString());//"data"是根据返回值设定 JSONObject jo = JSONObject.parseObject(data.toJSONString()); JSONArray records = JSONObject.parseArray(jo.get("records").toString());//"records"是根据返回值设定 return records;//返回的数据就是我需要去解析的 } } } catch (IOException e) { e.printStackTrace(); } return null; } public static void getData() { JSONArray datas = httpRequest();//调用方法,回去"data"里面的数据 List products = new ArrayList();//创建dto对象,这个对象的结构来自于返回值 if (!datas.isEmpty()) {//如果返回的数据不为空 products = JSONArray.parseArray(datas.toJSONString(), ProductDto.class);//转换成对象 } //输出测试 products.forEach(product -> System.out.println(product)); } }

给大家我的git源码,有兴趣的小伙伴可以看看具体的实现(一直在更新中) git地址:https://github.com/peach-tec/peachsys



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有